let path = require('path') // 因为是node环境下,可以获得当前文件的绝对路径 
// 安装依赖 npm install html-webpack-plugin
let HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    // 开发模式  development 生产模式 production
    mode: 'development',
    // 入口文件
    entry: './src/index.js',
    // 输出文件
    output: {
        // 输出文件名称
        filename: 'bundle.js',
        // 输出的路径
        // 绝对路径
        path: path.resolve(__dirname, 'dist'), // path.resolve() 模块方法 可以和 dist 进行整合
    },
    // loader的配置  处理 css 等文件
    module: {
        // 对某个格式的文件进行转换处理
        rules: [
            {
                test: /\.css$/,  // 后缀名为css的文件
                // 告知如何处理
                use: [
                    // npm install style-loader css-loader --save-dev 需要安装
                    // use 数组里的 loader 的顺序, 是从下往上 逆序执行
                    // 将 js 的样式内容插入到style 标签中
                    'style-loader',
                    // 将 css 文件转为js
                    'css-loader'
                ]
            }, {
                // 匹配图片文件
                test: /\.(jpg|png|gif)$/,
                // file-loader 加载的原因是 使用了文件
                loader: 'url-loader', //npm install url-loader html-loader file-loader
                // 图片小于8KB,解析成base64的路径, 减少请求数量,会使得体积更大
                options: {
                    limit: 8 * 1024,
                    // url-loader 的 es6 模块解析关闭
                    esModule: false,
                    // [hash:10]取图片前10位的hash
                    // [ext] 取图片的扩张名
                    name: '[hash:10].[ext]'
                }
            }, {
                test: /\.html$/,
                loader: 'html-loader' //npm install url-loader html-loader
            }
        ]
    },
    // 插件配置
    plugins: [
        new HtmlWebpackPlugin({
            template: './src/index.html'
        })
    ],
    devServer: {
        // 项目构建路径
        static: path.resolve(__dirname, 'dist'),
        // 开启 gzip 压缩
        compress: true,
        // 端口号
        port: 3000,
        // 自动打开浏览器
        open: true
    }
}